<?php
namespace Home\Model;
use Think\Model;
//use Think\Model\RelationModel;

/**
 * 
 **/
class UserModel extends Model{
    protected $_validate = array(
        //验证条件: 1表示必须验证  验证时间：新增数据和更新数据都验证 即默认值3
        array('username','/^\w{3,}$/','名称必须3个字母,数组，下划线以上',1,'regex',3),
        //验证条件：2表示 值不为空时(第一个条件已经保证了)   验证时间：3表示新增和更新数据时 确保账号不存在
        array('username','','名称已经存在',2,'unique',3),

        //验证条件：1表示 必须验证   验证时间： 1 新增数据时
        array('userpwd','/^\w{6,12}/','密码必须6-12位 数字，字母，下划线',1,'regex', 1),

        //验证条件：2表示 值不为空时   验证时间：2 更新数据时
        array('userpwd','/^\w{6,12}/','密码必须6-12位 数字，字母，下划线',2,'regex', 2),
     
        //验证条件：1表示 必须验证   验证时间： 1 新增数据时
        array('userpwd2','userpwd','重复输入密码不正确',1,'confirm', 1),

        //验证条件：2表示  值不为空时  验证时间： 2 更新数据时
        array('userpwd2','userpwd','重复输入密码不正确',2,'confirm', 2),


        //验证条件：1表示 必须验证   验证时间： 默认值3 新增和更新数据时
        array('verify','require','必须填写验证码',1),

        //验证条件：1表示 必须验证   验证时间： 默认值3 新增和更新数据时
        //callback：当前模型的方法 function：函数
        array('verify','checkVerify','验证码不正确',1,'callback'),//别忘了最后的附加条件
    );

    //完善  时间补全 忽略部分未填项 密码未填则保持原样不更新
    protected $_auto = array(
        //注意凡是在此处自动处理的值，在自动创建数据时都会被创建即使数据表中没有，也就是说自动创建数据此时并没有参考对应的数据表 所以密码的在添加时可以使用自动完成来进行MD5加密，更新时由于不确定是否有值所以不能用自动加密，一旦自动加密可能错把空值加密并更新到数据库。
        //array('user_id','md5',3,'function'),
        //自动完成时间：为1表示增加数据时  必须有值(自动验证) 加密(自动完成)
        array('userpwd','md5',1,'function'),

        //自动完成时间：为2表示更新数据时   为空忽略 有值就加密
        //1为空忽略 
        array('userpwd','',2,'ignore'),//更新数据时为空则忽略  而且一般不要把修改密码和修改其他信息混在一起   
        //2有值就加密  
        //auto没有提供判断是否为空的方法所以只能自己在控制器中判断 
    );
    public function checkVerify($code,$id=''){//此处可以封装为函数
        $verify = new \Think\Verify();
        return $verify->check($code,$id);
    }
}

?>
